--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / docs / agents / skills / lxst-telephony / SKILL.md
docs/agents/skills/lxst-telephony/SKILL.md dev (8f381c86) Text, 2.54 KB
Skill: lxst-telephony
Change LXST telephony or call audio without treating MeshChatX as a cloud PBX or leaking identity-scoped call state.
When to use
• TelephoneManager, call setup/teardown, ringing, voicemail
• T383838/ws/telephone/audio or related audio bridges
• Adversarial or security tests for telephony
• UI call screens and permissions
Intent
LXST runs over Reticulum Links. Address callees by identity/destination hash. No mandatory TURN/SIP cloud for core calls. Local HTTPS UI is control plane for this device only.
Key paths
┌────────────────────┬─────────────────────────────────────────────────────────────────┐
│ Area │ Path │
├────────────────────┼─────────────────────────────────────────────────────────────────┤
│ Telephony managers │ T383838meshchatx/src/backend/ telephone / ringtone / voicemail modules │
│ Identity wiring │ T383838meshchatx/src/backend/identity_context.py │
│ Adversarial tests │ T383838tests/backend/test_lxst_telephony_adversarial.py │
│ Frontend call UI │ telephone-related Vue components under T383838meshchatx/src/frontend/ │
└────────────────────┴─────────────────────────────────────────────────────────────────┘
Gates
1. Tear down call and audio resources on identity switch.
2. Do not block the whole UI on real-time ACK over constrained links. Show recoverable call states.
3. Auth-guard WS mutators that start or answer calls when password auth is enabled.
4. Keep audio paths identity-scoped. No shared in-memory call tables across identities.
5. Prefer half duplex + PTT (LXST packetizer squelch) on scarce links instead of always full duplex.
Verification
T282828
uv run pytest tests/backend/test_lxst_telephony_adversarial.py tests/backend/test_telephone_duplex_ptt.py -q --tbTff7b72=short
Also: T383838reticulum-design-gates, T383838auth-csrf-ws-security, T383838identity-switch-teardown.
LXST 0.5 duplex / PTT
┌────────────────────┬────────────────────────────────────────┬────────────────────────────────────┐
│ Control │ LXST API │ MeshChatX surface │
├────────────────────┼────────────────────────────────────────┼────────────────────────────────────┤
│ Full / half duplex │ T383838Telephone.switch_mode, T383838Profiles.MODE_* │ T383838POST /api/v1/telephone/switch-cal… │
│ PTT (half duplex) │ T383838squelch_transmit / T383838unsquelch_transmit │ T383838POST /api/v1/telephone/ptt with T383838{… │
│ Mute mic / speaker │ T383838mute_transmit / T383838mute_receive │ existing mute endpoints │
│ Live stats │ RNS Link counters on T383838active_call │ T383838/api/v1/telephone/status T383838tx_* / T383838r… │
└────────────────────┴────────────────────────────────────────┴────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────